<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Mensajes_model extends CI_Model {

  public function get_conversaciones($paginados = TRUE, $per_pag='50')
  {
    $sql = '';
    //paginacion
    if($paginados)
    {
      $this->load->library('pagination');
      $params = array(
          'result_items_per_page' => $per_pag,
          'result_page' => (isset($_GET['pag'])? $_GET['pag']: 0)
      );
      if($params['result_page'] % $params['result_items_per_page'] == 0)
        $params['result_page'] = ($params['result_page']/$params['result_items_per_page']);
    }
    //Filtros para buscar
    if( ! empty($_GET['fnombre']))
      $sql = " AND lower(u.nombre) LIKE '%".mb_strtolower($this->input->get('fnombre'), 'UTF-8')."%'";

    if( ! empty($_GET['ftipo']) && $this->input->get('ftipo') !== 'todos')
      $sql .= " AND tipo='".$this->input->get('ftipo')."'";

    if($this->input->get('fmensajes') === '0')
      $sql .= " AND sin_responder > '0'";


    $query = BDUtil::pagination("
        SELECT u.id_usuario, u.nombre, u.email, u.usuario, u.tipo, u.status, COALESCE(pend.sin_responder, 0) as sin_responder
        FROM usuarios u
        INNER JOIN inbox ibox ON ibox.id_usuario=u.id_usuario
        LEFT JOIN (
          SELECT u.id_usuario, COUNT(ibox.id_msg) as sin_responder
          FROM usuarios u
          INNER JOIN inbox ibox ON ibox.id_usuario=u.id_usuario
          WHERE ibox.alerta = 1
          GROUP BY u.id_usuario) as pend ON pend.id_usuario=u.id_usuario
        WHERE u.tipo != 'admin' ".$sql."
        GROUP BY u.id_usuario
        ORDER BY nombre ASC
        ", $params, true);
    $res = $this->db->query($query['query']);

    $response = array(
        'conversaciones' => array(),
        'total_rows'     => $query['total_rows'],
        'items_per_page' => $params['result_items_per_page'],
        'result_page'    => $params['result_page']
    );

    if($res->num_rows() > 0)
      $response['conversaciones'] = $res->result();

    return $response;
  }


  public function get_conversacion_usuario($id_usuario = FALSE)
  {
    $id_usuario = isset($_GET['id'])?$_GET['id']:$id_usuario;
    $query_res = $this->db->query("SELECT ibox.id_msg, ibox.id_usuario, ibox.mensaje, ibox.fecha, ibox.alerta, iboxr.id_usuario AS usuario_res
                                FROM inbox ibox
                                LEFT JOIN inbox_respuestas iboxr ON iboxr.id_msg = ibox.id_msg
                                WHERE ibox.id_usuario = ".$id_usuario."
                                OR iboxr.id_usuario = ".$id_usuario."
                                ORDER BY ibox.fecha ASC");

    $nombre_usuario = $this->db->select('nombre')->from('usuarios')->where('id_usuario',$id_usuario)->get()->row()->nombre;

    $conversacion['conversacion'] = $query_res->result();
    $conversacion['nombre_usuario'] = $nombre_usuario;

    return $conversacion;
  }

  public function responder($id_usuario = FALSE)
  {
    $id_usuario = isset($_GET['id'])?$_GET['id']:$id_usuario;

    $data = array('id_usuario'=>$this->session->userdata("id_usuario"), 'mensaje'=> nl2br($_POST['frespuesta']));

    $this->db->insert('inbox', $data);
    $id_msg = $this->db->insert_id();

    $this->db->insert('inbox_respuestas', array('id_msg'=>$id_msg, 'id_usuario'=>$id_usuario));

    $this->db->update('inbox', array("alerta" => 0), array('id_usuario'=>$id_usuario));

    return TRUE;
  }

  public function ajax_elimina_mensaje()
  {
    $this->db->delete('inbox', array('id_msg'=>$_POST['id']));

    return TRUE;
  }

}

/* End of file mensajes_model.php */
/* Location: ./application/models/mensajes_model.php */
